package xyz.xmh.pattern.creational.singletonpattern;

/**
 * StaticClassSingleton
 * 静态内部类模式单例
 * 使用内部类创建实例对象，可以延迟实例化对象，内部类在使用的时候才被加载
 *
 * @author xuMingHai
 * @since 2021/4/28 星期三 15:34
 */
public class StaticClassSingleton {

    private StaticClassSingleton() {
    }

    public static StaticClassSingleton getInstance() {
        return SingletonHolder.INSTANCE;
    }

    public void showMessage() {
        System.out.println("Hello StaticClassSingleton!");
    }

    /**
     * 静态内部类，唯一属性是外部类的实例对象
     */
    private static class SingletonHolder {
        private static final StaticClassSingleton INSTANCE = new StaticClassSingleton();
    }

}
